package com.ruoyi.web.controller.depot;

import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.depot.domain.vo.SelectedOrderVO;
import com.ruoyi.depot.domain.vo.VoOrdersProduct;
import com.ruoyi.depot.service.VoOrdersProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/depot/orders")
public class VoOrdersProductController extends BaseController {

    @Autowired
    private VoOrdersProductService voOrdersProductService;

    /**
     * 通过采购单id查询要入库的数据
     */
    @GetMapping("/selectByOrdersIdList")
    public TableDataInfo selectByOrdersIdList(VoOrdersProduct voOrdersProduct){
        startPage();
        List<VoOrdersProduct> list = voOrdersProductService.selectVoOrdersProductByOrdersId(voOrdersProduct);
        return getDataTable(list);
    }
    /**
     * 通过采购id查询要入库的数据
     */
    @GetMapping("/selectByOrderIdList")
    public TableDataInfo selectByOrderIdList(VoOrdersProduct voOrdersProduct){
        startPage();
        List<VoOrdersProduct> list = voOrdersProductService.selectVoOrdersProductByOrderId(voOrdersProduct);
        return getDataTable(list);
    }

    /**
     * 通过产品id来查询要入库的数据
     */
    @GetMapping("/selectByProductIdList")
    public TableDataInfo selectByProductIdList(VoOrdersProduct voOrdersProduct){
        startPage();
        List<VoOrdersProduct> list = voOrdersProductService.selectVoOrdersProductByProductId(voOrdersProduct);
        return getDataTable(list);
    }

    /**
     * 取消入库
     */
    @PutMapping("/cancelPutAway")
    public AjaxResult cancelPutAway(@RequestBody List<VoOrdersProduct> voOrdersProductList){
        return toAjax(voOrdersProductService.cancelPutAway(voOrdersProductList));
    }

    /**
     * 添加入库信息
     */
    @PostMapping("/addInboundProducts")
    public AjaxResult addInboundProducts(@RequestBody VoOrdersProduct voOrdersProduct){
        return toAjax(voOrdersProductService.addInboundProducts(getNickname(),voOrdersProduct));
    }

    /**
     * 通过产品明细id查询数据
     * @param ids
     * @return
     */
    @GetMapping("/selectByIds/{ids}")
    public AjaxResult selectByIds(@PathVariable Long[] ids){
        return success(voOrdersProductService.selectByIds(ids));
    }

    @PutMapping("/updateDetailsStatus")
    public AjaxResult updateDetailsStatus(@RequestBody List<VoOrdersProduct> voOrdersProductList){
        return toAjax(voOrdersProductService.updateDetailsStatus(voOrdersProductList));
    }

    /**
     * 查询产品明细表的和修改明细表是否有对应的数据
     * @param ordersId 条件
     * @return 结果
     */
    @GetMapping("/selectListProductId/{ordersId}")
    public AjaxResult selectListProductId(@PathVariable Long ordersId){
        return success(voOrdersProductService.selectListProductId(ordersId));
    }

    /**
     * 修改是否选择的状态
     * @param id
     * @return
     */
    @PutMapping("/updateProductIdDetailsStatus/{id}")
    public AjaxResult updateProductIdDetailsStatus(@PathVariable Long id){
        return toAjax(voOrdersProductService.updateProductIdDetailsStatus(id));
    }

    /**
     * 修改的时候取消需要判断是否选择的状态
     * @param flay 判断是否选中的状态
     * @param ordersId 采购单号id
     * @param productId 产品id
     * @return 结果
     */
    @PutMapping("/updateTestDetailsStatus/{flay}/{ordersId}/{productId}")
    public AjaxResult updateTestDetailsStatus(@PathVariable boolean flay,@PathVariable Long ordersId,@PathVariable Long productId){
        return toAjax(voOrdersProductService.updateTestDetailsStatus(flay,ordersId,productId));
    }

    /**
     * 根据采购订单id查询出对应的采购商品数据
     * @param voOrdersProduct
     * @return
     */
    @PostMapping("/ordersDetails")
    public AjaxResult selectByReceiptOrdersIdList(@RequestBody VoOrdersProduct voOrdersProduct){
//        startPage();
        List<SelectedOrderVO> list = voOrdersProductService.selectByReceiptOrdersIdList(voOrdersProduct.getOrdersIds());
        return success(list);
    }
}
